package com.zrkizzy.hashmap;

import java.util.HashMap;
import java.util.Map;

/**
 * 454. 四数相加 II
 *
 * @author zhangrongkang
 * @since 2022/11/24
 * @see <a href="https://leetcode.cn/problems/4sum-ii/">https://leetcode.cn/problems/4sum-ii/</a>
 */
public class 四数相加II {
    public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
        // 哈希表，存储相加之和
        Map<Integer, Integer> map = new HashMap<>();
        // 定义辅助变量和返回结果
        int temp = 0, result = 0;
        // 遍历前两个数组
        for (int i : nums1) {
            for (int j : nums2) {
                // 给辅助变量赋值
                temp = i + j;
                // 查看哈希表中是否存在当前数组
                if (map.containsKey(temp)) {
                    int count = map.get(temp);
                    map.put(temp, ++count);
                } else {
                    // 否则将当前数字添加到哈希表中
                    map.put(temp, 1);
                }
            }
        }

        // 遍历前两个数组
        for (int i : nums3) {
            for (int j : nums4) {
                // 给辅助变量赋值
                temp = i + j;
                // 查看哈希表中是否存在当前相加为0的值
                if (map.containsKey(0 - temp)) {
                    result += map.get(0 - temp);
                }
            }
        }

        return result;
    }
}
